home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 015a / v12n06.zip / FTR.ZIP / FTR.C < prev    next >
Text File  |  1992-12-10  |  2KB  |  84 lines

  1. //-------------------------------------------------------------------
  2. // FTR.C - A video demonstration program
  3. //
  4. // Copyright 1993 Douglas Boling
  5. //-------------------------------------------------------------------
  6.  
  7. #include <bios.h>
  8. #include <graph.h>
  9.  
  10. void DrawShip (int);
  11. void EraseShip (int);
  12. void GetVideoBuff (void);
  13.  
  14. unsigned int usVSeg, usVOff;
  15.  
  16. main () {
  17.    unsigned far * lptr;
  18.    int     i, j, k, m;
  19.    
  20.    _setvideomode (_TEXTC80);               // Set video mode
  21.    _clearscreen (_GCLEARSCREEN);           // Clear screen
  22.    
  23.    GetVideoBuff();
  24.    // Display fighter and loop
  25.    k = 0;
  26.    for (i = 0; i < 25; i += 4) {
  27.       for (j = i * 2; j < 150 - (i * 2); j += 2) {
  28.          EraseShip(k);
  29.          k = j + (i * 160);
  30.          DrawShip (k);
  31.          for (m = 0; m < 32384; m++);
  32.       }    
  33.       for (j = 150 - (i * 2); j > (i * 2); j -= 2) {
  34.          EraseShip(k);
  35.          k = j + ((i + 2) * 160);
  36.          DrawShip (k);
  37.          for (m = 0; m < 32384; m++);
  38.       }
  39.    }
  40.    return 0;
  41. }
  42. //
  43. // Determine video buffer location
  44. //
  45. void GetVideoBuff (void) {
  46.    lptr = 0x400063;                        // Get video segment
  47.    if ((*lptr && 0x400) == 0) 
  48.       usVSeg = 0xb000;
  49.    else   
  50.       usVSeg = 0xb800; 
  51.  
  52.    lptr = 0x40004e;                        // Get video buff offset
  53.    usVOff = *lptr;
  54.    return;
  55. }
  56. //
  57. // Draw spaceship using text characters
  58. //
  59. void DrawShip (int sOffset) {
  60.    char far *lpBuff;
  61.  
  62.    lpBuff = (((long) usVSeg) << 16) | sOffset;
  63.    *lpBuff = 199;
  64.    lpBuff += 2;
  65.    *lpBuff = 79;
  66.    lpBuff += 2;
  67.    *lpBuff = 182;
  68.    return;
  69. }
  70. //
  71. // Erase space ship using blanks
  72. //
  73. void EraseShip (int sOffset) {
  74.    char _far *lpBuff;
  75.    
  76.    lpBuff = (((long) usVSeg) << 16) | sOffset;
  77.    *lpBuff = 32;
  78.    lpBuff +=2;
  79.    *lpBuff = 32;
  80.    lpBuff +=2;
  81.    *lpBuff = 32;
  82.    return;
  83. }
  84.